package demo1;
/*
对于功能类似的方法，因为参数列表不一样，方法名称过多！

    方法的重载（Overload）：多个方法名称一样，但是参数列表不一样！
    好处：只需要记住唯一一个方法名称，就可以实现类似多个功能！

    方法重载与下列因素有关：
    1、参数个数不同
    2、参数类型不同（但是得强制转换成相同的）
    3、参数的多类型顺序不同

    方法重载与下列因素无关：
    1、与参数的名称无关
    2、与方法的返回值类型无关
    3、

 */
public class test6 {
    public static void main(String[] args) {
        /*System.out.println("结果是："+sumTwo(10,20));
        System.out.println("结果是："+sumThree(10,20,30));
        System.out.println("结果是："+sumFour(10,20,30,40));
        */

        System.out.println("结果是："+sum(10,20));//只需要对应上下面的方法参数就行，不在乎个数
        //System.out.println("结果是："+sum(10,20,01,22,55));此时报错，是因为找不到任何方法匹配！

    }
    //以下三个方法名称一样却没报错，是因为构成了方法的重载
    public static int sum(int a,int b){
        return a + b;
    }
    public static int sum(double a,double b){
        return (int) (a + b);
    }
    public static int sum(int a,double b){
        return (int) (a + b);
    }
    public static int sum(double a,int b){
        return (int) (a + b);
    }
    /*
    下面写法是错的！与参数的名称无关
    public static int sum(int x,int y){
        return x + y;
    }*/
    /*
    写法错误，与返回值类型无关！
    public static double sum(int a,int b){
        return a + b;
    }*/
    public static int sum(int a,int b,int c){
        return a + b + c;
    }
    public static int sum(int a,int b,int c,int d){
        return a + b + c + d;
    }
}
